/**
 * 7.给出一个区间的集合，请合并所有重叠的区间。
示例 :
输入:[ {n:1,n:3},{n:2,n:6},{n:8,n:10},{n:15,n:18} ]
输出: [{n:1,n:6},{n:8,n:10},{n:15,n:18} ]
解释: 区间 {n:1,n:3} 和 {n:2,n:6} 重叠, 将它们合并为 {n:1,n:6}.

要求：
1.随机生成15个区间，形成一个区间的集合。
2.输出生成的区间集合。
3.将重叠区间进行合并。
输出合并完成后的区间集合。
 */

function createData(max, count) {
    var arr = [];
    for (let i = 0; i < count; i++) {
        var start = Math.ceil(Math.random() * max);
        var end = Math.ceil(Math.random() * max);
        if (start > end) {
            [start, end] = [end, start];
        }
        var obj = { start, end }
        arr.push(obj);
    }
    return arr;
}
function concat(arr=[]){
    if(arr.length==0) return [];
    for(let i=0;i<arr.length;i++){
        for(let j=i+1;j<arr.length;j++){
            if(arr[i].start>=arr[j].start&&arr[i].start<=arr[j ].end){
                arr[i].start=arr[j].start;
                arr[i].end=Math.max(arr[i].end,arr[j].end);
                arr.splice(j,1);
                i=0;
                j=i;
                // console.log(arr);
                continue;
            }
            if(arr[i].end>=arr[j].start&&arr[i].end<=arr[j].end){
                arr[i].start=Math.min(arr[i].start,arr[j].start);
                arr[i].end=arr[j].end;
                arr.splice(j,1);
                i=0;         
                j=i;       
                // console.log(arr);
                continue;
            }
            if(arr[i].start<=arr[j].start&&arr[i].end>=arr[j].end){
                arr.splice(j,1);
                i=0;
                j=i;
                // console.log(arr);
                continue;
            }
        }
    }
    return arr;
}
let arr=createData(100,15);
console.log(arr);
let arrnew=concat(arr);
console.log(arrnew);
